#pragma once
#include <iostream>
#include<deque>
using namespace std;
namespace zkf
{
	template<class T, class container = deque<T>>
	class queue
	{
	public:
		void push(const T& s)
		{
			as.push_back(s);
		}
		void pop()
		{
			as.pop_front();
		}
		size_t size()const
		{
			return as.size();
		}
		const T& front()const
		{
			return as.front();
		}
		const T& back()const
		{
			return as.back();
		}
		bool empty()const
		{
			return as.empty();
		}
		T& operator[](size_t i)
		{
			return as[i];
		}
	private:
		container as;
	};
}
